package com.kakarote.hrm.entity.BO.export;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ExcelIgnoreUnannotated
public class DeptExportBO {

    @ExcelProperty(value = "部门编号")
    @ApiModelProperty(value = "部门编号")
    private String deptId;

    @ExcelProperty(value = "父级部门ID(顶级部门为0)")
    @ApiModelProperty(value = "父级部门ID(顶级部门为0)")
    private String parentId;

    @ApiModelProperty(value = "类型(1-公司,2-部门)")
    private Integer deptType;

    @ExcelProperty(value = "类型")
    @ApiModelProperty(value = "类型")
    private String deptTypeCn;

    @ExcelProperty(value = "部门名称")
    @ApiModelProperty(value = "部门名称")
    private String name;

    @ExcelProperty(value = "部门编码")
    @ApiModelProperty(value = "部门编码")
    private String code;

    @ApiModelProperty(value = "部门负责人ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long mainEmployeeId;

    @ExcelProperty(value = "部门负责人名称")
    @ApiModelProperty(value = "部门负责人名称")
    @JsonSerialize(using = ToStringSerializer.class)
    private String mainEmployeeName;

    @ApiModelProperty(value = "分管领导ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private String leaderEmployeeId;

    @ExcelProperty(value = "分管领导名称")
    @ApiModelProperty(value = "分管领导名称")
    @JsonSerialize(using = ToStringSerializer.class)
    private String leaderEmployeeName;

    @ApiModelProperty(value = "机构板块ID")
    private Integer orgSector;

    @ExcelProperty(value = "机构板块")
    @ApiModelProperty(value = "机构板块")
    private String orgSectorCn;

    @ApiModelProperty(value = "单位性质ID")
    private Integer unitProperties;

    @ExcelProperty(value = "单位性质")
    @ApiModelProperty(value = "单位性质")
    private String unitPropertiesCn;

    @ApiModelProperty(value = "组织性质")
    private Integer orgType;

    @ApiModelProperty(value = "组织性质")
    @ExcelProperty(value = "组织性质")
    private String orgTypeCn;

    @ExcelProperty(value = "部门层级")
    @ApiModelProperty(value = "部门层级")
    private Integer level;

    @ExcelProperty(value = "部门排序号")
    @ApiModelProperty(value = "部门排序号")
    private Long sortId;

    @ExcelProperty(value = "正处编制人数")
    @ApiModelProperty(value = "正处编制人数")
    private Long sectionChiefPreparation;

    @ExcelProperty(value = "正处现配备人数")
    @ApiModelProperty(value = "正处现配备人数")
    private Long sectionChiefNum;

    @ExcelProperty(value = "副处编制人数")
    @ApiModelProperty(value = "副处编制人数")
    private Long deputySectionChiefPreparation;

    @ExcelProperty(value = "副处现配备人数")
    @ApiModelProperty(value = "副处现配备人数")
    private Long deputySectionChiefNum;

    @ExcelProperty(value = "正科编制人数")
    @ApiModelProperty(value = "正科编制人数")
    private Long directorPreparation;

    @ExcelProperty(value = "正科现配备人数")
    @ApiModelProperty(value = "正科现配备人数")
    private Long directorNum;

    @ExcelProperty(value = "副科编制人数")
    @ApiModelProperty(value = "副科编制人数")
    private Long deputyDirectorPreparation;

    @ExcelProperty(value = "副科现配备人数")
    @ApiModelProperty(value = "副科现配备人数")
    private Long deputyDirectorNum;

    @ApiModelProperty(value = "上级部门名称")
    private String parentName;

    @ExcelProperty(value = "上级部门编码")
    @ApiModelProperty(value = "上级部门编码")
    private String parentCode;

}
